package com.taotao.job.core.trigger.context;

import com.alibaba.fastjson.JSON;
import com.taotao.job.core.model.JobMeta;
import lombok.Builder;
import lombok.Getter;

/**
 *
 * 触发的上下文，会全部透传给执行器
 *
 * @author fanbeibei
 * @version 1.0
 * @date 2021/2/4 9:37
 */
@Builder
@Getter
public class TriggerContext {
    /**
     * 任务元数据
     */
    private JobMeta jobMeta;

    /**
     * 触发特征
     */
    private TriggerFeature triggerFeature;

    /**
     * 分片数
     */
    private int shardingCount = 1;

    /**
     * 分片索引
     */
    private int shardingIndex = 0;

    /**
     * 应该触发时间，有cron表达式的就是根据cron表达式算出来的时间
     */
    private long shouldTriggerTime = -1;
    /**
     * 实际触发时间
     */
    private long triggerTime;

    /**
     * 执行器路由策略
     */
    private String executorRouteStrategy;


    @Override
    public String toString() {
        return JSON.toJSONString(this);
    }
}
